package main

import (
	"fmt"
	"io"
	"os"
)

func main() {
	file, err := os.Open("./file.txt")
	if err != nil {
		fmt.Println(err)
	}
	// fmt.Println(file)
	defer file.Close()
	file2, err := os.OpenFile("./copy.txt", os.O_RDWR|os.O_CREATE, 0777)
	defer file2.Close()
	info, err := os.Stat("./copy.txt")
	bs := info.Size() //- 1 //这里不能进行减1操作 -1 会导致往前了一个字节
	fmt.Println("获取文件1的字节-1的值为:", bs)
	bb, err := file.Seek(bs, io.SeekStart)
	fmt.Println("偏移了", bb)
	// aa, err := io.Copy(file2, file) // 这个方法是正复制, 不能进行断电续传
	// fmt.Println("本次复制了:%d个字节", aa)

	//断点续传
	file2.Seek(0, 2) //提前定好断电续传文件开始位置
	bs1 := make([]byte, 5, 5)
	for {
		num, err := file.Read(bs1)
		if err == io.EOF || num == 0 {
			fmt.Println("复制完成")
			break
		}
		fmt.Println("读取到的内容:", bs1[:num])

		file2.Write(bs1[:num])
	}
}
